9
תגובות

עזרה ב htaccess

פתח Ben ,
נסתי כל מיני ווריאציות שונות, אבל אני לא מצליח לאפשר " בכתובת.
או בכללי, לאפשר את כל התווים ללא יוצא מהכלל, כל תו שקיים לאפשר אותו.
או בכללי, אני חייב עזרה בניסוח של הביטוי:
כעיקרון אני רוצה שבקיצור יהיה
/Az9-_+all

סלאש, אחריו ביטוי ממספרים, אותיות גדולות וקטנות, מקו תחתון ומקו רגיל, ואחריו פלוס, אחרי הפלוס יבוא הכל.

כתבתי דבר כזה אבל זה פשוט לא עובד:
RewriteRule ^([A-Za-z0-9\_\-]+)+([^/]*)\.htm$ /templates/pos.php?id=$1&name=$2 [L]


כעיקרון, ה id צריך להכיל ערך שדרכו אני שולף את הכל דרך api והערך הזה יש לו מגבלה והname זה סתם שם שיהיה בכתובת בשביל גוגל..... ובסוף חשוב לי הסיומת .htm

9 תשובות

avatar ענה OrelBeY ב 31 לינואר 2014 #

קודם כול, אתה לא צריך להבריח קו תחתון ומקף.
בכל מקרה, היית צריך להבריח את הפלוס שבין שני הביטויים.

^([A-Za-z0-9_-]+)\+([^/]*)\.htm$


רק הערה קטנה, שיכול להיות שהיא לא מוצדקת במקרה הזה, אבל בהרבה מקרים כן. אז רק למקרה שלא ידעת:
באמת יכול להיות שה-ID יהיה רק תו אחד או אולי 1000 תווים? ויכול להיות שלא יהיה שם בכלל? או להפך, יהיה שם ארוך מאוד ומסורבל.

avatar ענה Ben ב 31 לינואר 2014 #

היי ותודה על התשובה.
אגיד לי בגדול, האתר משתמש במידע מיוטיוב (זה מין אינדקס כזה וזה בשביל הטריילר).
הקישור של הדף נראה ככה:
http://mysite.com/ID+NAME
האיידי הוא בעצם האיידי של הסרטון, והשם זה השם של הסרטון.
האיידי הוא מכיל ערכים קבועים שציינתי מעלה, והשם הוא חופשי, ז"א הוא מכיל את כל האותיות והמספרים והסימנים.
הבעיה היא שכאשר אני בא להציג סרטון שהשם שלו מכיל " אני מקבל שגיאה 403.
המטרה שלי היא לאפשר לשם להיות בלי מגבלה של משהו, שכל מידע שאקבל מיוטיוב (השם) יתקבל אצלי.

זאת השגיאה שמגיעה מתי שאני מנסה לגשת לסרטון שמכיל גרשיים בשם:

You don't have permission to access /90gowOV8zaE+סיימון+DJ+מוסיקה+לאירועים+ראשל"צ+052-3388600+-הבר+מצווה+של+רוי.htm on this server.


השם של הסרטון: סיימון DJ מוסיקה לאירועים ראשל"צ 052-3388600 -הבר מצווה של רוי
זה סתם משהו אקראי מיוטיוב.

avatar ענה OrelBeY ב 31 לינואר 2014 #

פספסתי את הקטע על הגרשיים הכפולים.

זו לא בעיה ב-htaccess או בביטויים רגולריים. כתובות URL לא יכולות להכיל תווים מסוימים מטעמי בטיחות, והתקן דורש שאם הם נוכחים - עליהם להיות מקודדים. גרש כפול הוא אחד מהתווים האלה. לפירוט נוסף קרא את הקטע "Unsafe" בקישור שצירפתי.

avatar ענה Ben ב 31 לינואר 2014 #

אז בעצם אני פשוט צריך להחליף את התווים שמצויינים בקישור או שיש איזה פונקציה מובנת ב php שמסדרת את זה עבורי ?

avatar ענה OrelBeY ב 31 לינואר 2014 #

הפונקציה המובנית rawurlencode מקודדת מחרוזת רגילה ל-URL.

avatar ענה Ben ב 31 לינואר 2014 #

אני מכיר את הפונקציה הזאת ואני משתמש בה, ועדיין יש את אותה הבעיה

avatar ענה OrelBeY ב 31 לינואר 2014 #

משהו לא בסדר עם הקידוד של הכתובת שרואים בהודעת השגיאה. בטח שתהיה לך שגיאה אם יש בכתובת גרשיים כפולים (ועוד כמה תווים אסורים). אתה צריך לקודד את הכתובת של הקישור שהגשת לגולש לכתובת URL תקנית, וגם להשתמש בקידוד מתאים (UTF-8).

avatar ענה Ben ב 31 לינואר 2014 #

אני לא מבין מה לא בסדר עם הקידוד.
בתגית a לדוגמא אני פשוט כותב את הקישור עם rawurlencode וזהו...

avatar ענה OrelBeY ב 01 לפברואר 2014 #

נסה להשתמש ב-html_entity_decode לפני שאתה משתמש ב-rawurlencode.